package com.xxxy.ljh.myapplication.Dao;

import com.xxxy.ljh.myapplication.model.Club;

import java.util.List;

/**
 * 社团数据访问接口，定义了对社团信息的各种操作方法。
 */
public interface ClubDao {
    /**
     * 获取所有已审核通过的社团列表。
     *
     * @return 已审核通过的社团列表
     */
    List<Club> getAllClubs();

    /**
     * 根据ID获取指定社团的详细信息。
     *
     * @param clubId 社团唯一标识符
     * @return 对应的社团对象，若不存在则返回null
     */
    Club getClubById(int clubId);

    /**
     * 创建新的社团。
     *
     * @param club 社团信息对象
     * @return 是否创建成功
     */
    boolean createClub(Club club);

    /**
     * 更新社团信息。
     *
     * @param club 社团信息对象
     * @return 是否更新成功
     */
    boolean updateClub(Club club);

    /**
     * 删除社团（逻辑删除）。
     *
     * @param clubId 社团唯一标识符
     * @return 是否删除成功
     */
    boolean deleteClub(int clubId);

    /**
     * 获取所有待审核的社团列表。
     *
     * @return 待审核的社团列表
     */
    List<Club> getPendingClubs();

    /**
     * 审核社团申请。
     *
     * @param clubId    社团ID
     * @param status    审核状态（1通过，2拒绝）
     * @param adminId   审核管理员ID
     * @param remark    审核备注
     * @return 是否审核成功
     */
    boolean auditClub(int clubId, int status, int adminId, String remark);
    
    /**
     * 根据关键字搜索社团
     * 
     * @param keyword 搜索关键字
     * @return 匹配的社团列表
     */
    List<Club> searchClubs(String keyword);
    
    /**
     * 根据创始人ID获取其创建的社团ID
     * 
     * @param founderId 创始人ID
     * @return 社团ID，如果未找到则返回-1
     */
    int getClubIdByFounderId(int founderId);
}